home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GEM / VDIATTRI.D < prev    next >
Encoding:
Modula Definition  |  1989-06-18  |  11.8 KB  |  313 lines

  1. DEFINITION MODULE VDIAttributes;
  2.  
  3.  
  4. (*  Megamax Modula-2 GEM-Library :  Die VDI Attributfunktionen
  5.  *
  6.  *  Autor: Manuel Chakravarty           Erstellt :  04.11.87
  7.  *
  8.  *  Version   2.2     V#0008
  9.  *)
  10.  
  11. (*      Mit Hilfe der Routinen dieses Moduls wird festgelegt, auf welche
  12.  *      Art und Weise die Ausgabeoperationen des Moduls 'VDIOutput' vor-
  13.  *      genommen werden sollen. Die hierfür notwendigen Aufzählungstypen
  14.  *      müssen aus 'GEMGlobals' importiert werden. Außerdem sind in 'Graf
  15.  *      Base' die 16 Farben der Standardfarbpalette als Konstanten vor-
  16.  *      definiert.
  17.  *      Versucht man einen Wert zu setzen, der vom GEM nicht akzeptiert
  18.  *      wird, so liefert 'GEMEnv.GemError' den Wert 'TRUE' und mit 'GEMEnv.
  19.  *      ErrorNumber' kann die Rückgabe des GEM erfragt werden. Diese Rück-
  20.  *      gabe stellt gleichzeitig den Wert dar, der vom GEM ersatzweise ge-
  21.  *      setzt wurde (als Ordinalzahl).
  22.  *)
  23.  
  24.  
  25. FROM    SYSTEM     IMPORT WORD;
  26.  
  27. FROM    GrafBase   IMPORT WritingMode, BitBlk16x16;
  28.  
  29. FROM    GEMGlobals IMPORT LineType, LineEnding, MarkerType, TEffectSet,
  30.                           TVertJust, THorJust, FillType;
  31.  
  32. FROM    GEMEnv     IMPORT DeviceHandle;
  33.  
  34.  
  35.  
  36. PROCEDURE SetWritingMode (handle: DeviceHandle; mode: WritingMode);
  37.  
  38.         (*  Mit Hilfe dieser Routine wird der aktuelle Zeichenmodus
  39.          *  für alle VDI Ausgaberoutinen festgelegt.
  40.          *)
  41.         
  42. PROCEDURE DefineColor (handle                 : DeviceHandle;
  43.                        color, red, green, blue: CARDINAL);
  44.  
  45.         (*  Hiermit wird das Aussehen der Farbe bestimmt, die den Farb-
  46.          *  index 'color' hat. 'red', 'green' und 'blue' geben den RGB-
  47.          *  Wert der Farbe in Promille an (Wertebereich 0 - 1000).
  48.          *)
  49.          
  50.          
  51.                 (*  Linien Attribute  *)
  52.                 (*  ================  *)
  53.  
  54.                          
  55. PROCEDURE SetLineType (handle: DeviceHandle; type: LineType);
  56.  
  57.         (*  Der aktuelle Linientyp wird festgelegt, dabei gibt es
  58.          *  folgende Möglichkeiten:
  59.          *
  60.          *  'solidLn'      -- Durchgezogene Linie ( **************** )
  61.          *  'longDashLn'   -- Gestrichelte Linie  ( ************---- )
  62.          *  'dottedLn'     -- Gepunktete Linie    ( ***-----**------ )
  63.          *  'dashDotLn'    --                     ( ******---***---- )
  64.          *  'dashedLn'     -- Kurz gestrichelt    ( ********-------- )
  65.          *  'dashDotDotLn' --                     ( ****---**--**--- )
  66.          *  'userLn'       -- Benutzerdefiniertes Linienmuster
  67.          *)
  68.  
  69. PROCEDURE DefUserLine (handle: DeviceHandle; pattern: WORD);
  70.  
  71.         (*  Mit dieser Routine kann man das benutzerdefinierte Linien-
  72.          *  muster festlegen. Das höchstwertige Bit legt den linken
  73.          *  Punkt des Musters fest.
  74.          *)
  75.  
  76. PROCEDURE SetLineWidth (handle: DeviceHandle; width: CARDINAL);
  77.  
  78.         (*  Hiermit legt man die Linienstärke in Pixel fest.
  79.          *  Es sind nur ungerade Zahlen erlaubt.
  80.          *)
  81.  
  82. PROCEDURE SetLineColor (handle: DeviceHandle; color: CARDINAL);
  83.  
  84.         (*  Es wird festgelegt welcher Farbnindex 'color' zum Zeichnen
  85.          *  von Linien verwendet werden soll.
  86.          *)
  87.  
  88.  
  89. PROCEDURE SetLineEndings (handle    : DeviceHandle;
  90.                           begin, end: LineEnding);
  91.  
  92.         (*  Das Aussehen der Linienenden wird bestimmt, es bedeutet:
  93.          *
  94.          *  'edgedLn'   -- Eckiges Ende (Standardwert)
  95.          *  'arrowedLn' -- Pfeilartiges Ende
  96.          *  'roundedLn' -- Abgerundetes Ende
  97.          *)
  98.          
  99.  
  100.                 (*  Makierungs Attribute  *)
  101.                 (*  ====================  *)
  102.  
  103.  
  104. PROCEDURE SetMarkerType (handle: DeviceHandle; type: MarkerType);
  105.  
  106.         (*  Damit bestimmt man das Aussehen von Markierungen,
  107.          *  wobei man die folgenden Alternativen hat:
  108.          *
  109.          *  'pointMark'   -- Einzelner Punkt
  110.          *  'plusMark'    -- Pluszeichen
  111.          *  'starMark'    -- Stern ('*')
  112.          *  'squareMark'  -- Quadrat
  113.          *  'crossMark'   -- Kreuz ('X')
  114.          *  'diamondMark' -- Raute
  115.          *)
  116.  
  117. PROCEDURE SetMarkerHeight (handle: DeviceHandle; height: CARDINAL);
  118.  
  119.         (*  Die Größe einer einzelnen Markierung wird mit dieser Routine
  120.          *  festgelegt.
  121.          *
  122.          *  Hinweis: Beim ATARI sind nur Vielfache von 11 erlaubt.
  123.          *)
  124.  
  125. PROCEDURE SetMarkerColor (handle: DeviceHandle; color: CARDINAL);
  126.  
  127.         (*  Hiermit wird die Markierungsfarbe bestimmt.
  128.          *)
  129.  
  130.  
  131.                 (*  Text Attribute  *)
  132.                 (*  ==============  *)
  133.  
  134. PROCEDURE SetAbsTHeight (    handle                    : DeviceHandle;
  135.                              height                    : CARDINAL;
  136.                          VAR charW, charH, cellW, cellH: CARDINAL);
  137.                          
  138.         (*  Diese Routine dient zum Einstellen der Texthöhe.
  139.          *
  140.          *  'height'    -- Die Höhe von der Grundlinie (baseline) bis
  141.          *                 zum oberen Rand (topline).
  142.          *  'handle'    -- bezeichnet das Ausgabegerät.
  143.          *
  144.          *  Ausgabeparameter
  145.          *  ----------------
  146.          *  die neuen Werte für
  147.          *  'charW'     -- Zeichenbreite
  148.          *  'charH'     -- Zeichenhöhe
  149.          *  'cellW'     -- Zellenbreite
  150.          *  'cellH'     -- Zellenhöhe
  151.          *
  152.          *  Bei einem proportionalen Zeichensatz wird die Breite des
  153.          *  breitesten Zeichens zurückgegeben.
  154.          *)
  155.  
  156. PROCEDURE SetPtsTHeight (    handle                    : DeviceHandle;
  157.                              height                    : CARDINAL;
  158.                          VAR charW, charH, cellW, cellH: CARDINAL);
  159.                          
  160.         (*  Entspricht im wesentlichen 'SetAbsTHeight', nur wird hier
  161.          *  die Höhe der gesamten Zeichenzelle angegeben.
  162.          *
  163.          *  'height'    -- Höhe der Zelle in Punkt, wobei ein Punkt
  164.          *                 1/72 Inch entspricht
  165.          *
  166.          *  Die VAR-Parameter entsprechen denen von 'SetAbsTHeight'.
  167.          *)
  168.  
  169. PROCEDURE SetTBaseLine (handle: DeviceHandle; angle: CARDINAL);
  170.  
  171.         (*  Die Ausrichtung der Grundlinie (base line) wird in 1/10 Grad
  172.          *  angegeben.
  173.          *
  174.          *  'angle'     -- Die gesamte Ausgabe wird um 1/10 * angle
  175.          *                 Grad entgegen dem Uhrzeigersinn gedreht.
  176.          *                 Leider sind hierfür nur die Werte 0, 900,
  177.          *                 1800, 2700 erlaubt.
  178.          *)
  179.          
  180. PROCEDURE SetTextFace (handle: DeviceHandle; font: CARDINAL);
  181.  
  182.         (*  Hiermit kann man den Zeichensatz bestimmen, der forthin bei
  183.          *  Textausgaben benutzt werden soll.
  184.          *  Die Font-Nummer wird bei VDIInquires.GetFaceName ermittelt.
  185.          *)
  186.  
  187. PROCEDURE SetTextColor (handle: DeviceHandle; color: CARDINAL);
  188.  
  189.         (*  Der Farbindex der für die Textausgabe bestimmten Farbe
  190.          *  wird festgelegt.
  191.          *)
  192.  
  193.  
  194. PROCEDURE SetTextEffects (handle: DeviceHandle; effects: TEffectSet);
  195.  
  196.         (*  Damit können bei Textausgaben besondere Effekte erzielt
  197.          *  werden. Folgende Effekte, die beliebig kombiniert werden
  198.          *  können, stehen zur Verfügung:
  199.          *
  200.          *  'thickText'     -- Fettschrift
  201.          *  'lightText'     -- Aufgehellte Schrift
  202.          *  'slantText'     -- Kursive Schrift
  203.          *  'underlineText' -- Die Schrift wird unterstrichen
  204.          *  'outlineText'   -- Umrahmte Schrift
  205.          *  'shadowText'    -- Schrift wird schattiert (Ist im GEM noch
  206.          *                     nicht implementiert)
  207.          *
  208.          *  Hinweis: Einige Kombinationen sind allerdings nicht besonders
  209.          *           sehenswert.
  210.          *)
  211.          
  212.  
  213. PROCEDURE SetTAlignment (handle: DeviceHandle;
  214.                          hor   : THorJust;
  215.                          vert  : TVertJust);
  216.  
  217.         (*  Hiermit kann der Text horizontal und vertikal ausgerichtet
  218.          *  werden.
  219.          *
  220.          *  Horizontale Ausrichtung:
  221.          *
  222.          *  'leftJust'   -- Der Text wird linksbündig ausgegeben (Standardwert)
  223.          *  'centerJust' -- Der Text wird zentriert
  224.          *  'rightJust'  -- Der Text wird rechtsbündig ausgegeben
  225.          *
  226.          *  Vertikale Ausrichtung,
  227.          *
  228.          *  'baseJust'    -- an der base line (Grundlinie; Standardwert)
  229.          *  'halfJust'    -- an der half line (Grenze der Kleinbuchstaben)
  230.          *  'ascentJust'  -- an der ascent line (Grenze der Großbuchstaben)
  231.          *  'bottomJust'  -- an der bottom line (Unterer Rand der Zeichenzelle)
  232.          *  'descentJust' -- an der descent line (Grenze der Unterlängen)
  233.          *  'topJust'     -- an der top line (Oberer Rand der Zeichenzelle
  234.          *)
  235.          
  236.          
  237.                 (*  Füll Attribute  *)
  238.                 (*  ==============  *)
  239.  
  240.  
  241. PROCEDURE SetFillType (handle: DeviceHandle; type: FillType);
  242.  
  243.         (*  Damit wird der Fülltyp bestimmt. Es werden folgende Typen
  244.          *  unterstützt:
  245.          *
  246.          *  'hollowFill'   -- Die Fläche wird nicht gefüllt.
  247.          *  'solidFill'    -- Die Fläche wird vollständig mit der aktuellen
  248.          *                    Füllfarbe gefüllt.
  249.          *  'dottPattern'  -- Die Fläche wird mit einem Punktmuster gefüllt.
  250.          *  'hatchPattern' -- Die Fläche wird mit einem Strichmuster gefüllt.
  251.          *  'userPattern'  -- Die Fläche wird mit einem selbstdefinierten
  252.          *                    Muster gefüllt.
  253.          *)
  254.  
  255. PROCEDURE SetFillIndex (handle: DeviceHandle; index: CARDINAL);
  256.  
  257.         (*  Diese Routine dient zum setzen des aktuellen Füllmusters.
  258.          *  Ist der Fülltyp 'dottPattern', so kann man aus 24 ver-
  259.          *  schiedenen Punktmuster eines auswählen (index = 1..24),
  260.          *  beim Typ 'hatchPattern' stehen 12 unterschiedliche Schraf-
  261.          *  furen zur Auswahl (index = 1..12).
  262.          *)
  263.  
  264. PROCEDURE SetFillColor (handle: DeviceHandle; color: CARDINAL);
  265.  
  266.         (*  Der Farbindex der aktuellen Füllfarbe wird festgelegt.
  267.          *)
  268.  
  269. PROCEDURE SetFillPerimeter (handle: DeviceHandle; visible: BOOLEAN);
  270.  
  271.         (*  Diese Procedur erlaubt es, die Umrahmung von Füllflächen
  272.          *  ein- und auszuschalten. Der Rahmen wird, falls gewünscht,
  273.          *  in der aktuellen Füllfarbe gezeichnet und die Linienattri-
  274.          *  bute werden nicht beachtet.
  275.          *
  276.          *  'TRUE'  -- Rahmen zeichnen
  277.          *  'FALSE' -- Rahmen weglassen
  278.          *)
  279.  
  280.  
  281. TYPE    FillPattern     = RECORD
  282.                             CASE planes : CARDINAL OF
  283.                               1: hiResPlane   : BitBlk16x16|
  284.  
  285.                               2: midResPlane1 : BitBlk16x16;
  286.                                  midResPlane2 : BitBlk16x16|
  287.  
  288.                               4: lowResPlane1 : BitBlk16x16;
  289.                                  lowResPlane2 : BitBlk16x16;
  290.                                  lowResPlane3 : BitBlk16x16;
  291.                                  lowResPlane4 : BitBlk16x16|
  292.                             END;
  293.                           END;
  294.         PtrFillPattern  = POINTER TO FillPattern;
  295.  
  296. PROCEDURE DefUserFill (handle: DeviceHandle; pattern: PtrFillPattern);
  297.  
  298.         (*  Hiermit kann ein eigenes Füllmuster definiert werden.
  299.          *  'pattern' ist ein Zeiger auf eine Füllmusterdefinition.
  300.          *
  301.          *  In 'pattern^.planes' wird die Anzahl der Bitebenen ein-
  302.          *  getragen, dabei gilt:
  303.          *
  304.          *      Hohe Auflösung     -- 1 Bitebene  (schwarz/weiß Darstellung)
  305.          *      Mittlere Auflösung -- 2 Bitebenen (4 verschiedene Farben)
  306.          *      Niedrige Auflösung -- 4 Bitebenen (16 verschiedene Farben)
  307.          *
  308.          *  In dem varianten Teil des Records wird für jede Bitebene
  309.          *  ein 16 x 16 Bit großes Muster angegeben.
  310.          *)
  311.  
  312. END VDIAttributes.
  313.